# -*- coding=utf-8
import imp
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import sys
import logging
from medical_app.common import tencentSTS
import json

# 获取腾讯 cos 的client对象
def getClient():
    res_data = tencentSTS.getSTSResult()
    # 获取临时密钥信息
    stsResult = json.loads(res_data)
    region = stsResult.get("region", 0)  # 获取存储地区
    bucket = stsResult.get("bucket", 0)  # 获取存储桶名称
    # 获取密钥和token详情
    credentials = stsResult.get("credentials", 0)
    secret_id = credentials.get("tmpSecretId", 0)
    secret_key = credentials.get("tmpSecretKey", 0)
    token = credentials.get("sessionToken", 0)

    # 正常情况日志级别使用INFO，需要定位时可以修改为DEBUG，此时SDK会打印和服务端的通信信息
    logging.basicConfig(level=logging.INFO, stream=sys.stdout)

    # 1. 设置用户属性, 包括 secret_id, secret_key, region等。Appid 已在CosConfig中移除，请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
    secret_id = secret_id  # 替换为用户的 SecretId，请登录访问管理控制台进行查看和管理，https://console.cloud.tencent.com/cam/capi
    secret_key = secret_key  # 替换为用户的 SecretKey，请登录访问管理控制台进行查看和管理，https://console.cloud.tencent.com/cam/capi
    region = region  # 替换为用户的 region，已创建桶归属的region可以在控制台查看，https://console.cloud.tencent.com/cos5/bucket
    # COS支持的所有region列表参见https://cloud.tencent.com/document/product/436/6224
    token = token  # 如果使用永久密钥不需要填入token，如果使用临时密钥需要填入，临时密钥生成和使用指引参见https://cloud.tencent.com/document/product/436/14048
    scheme = "https"  # 指定使用 http/https 协议来访问 COS，默认为 https，可不填

    config = CosConfig(
        Region=region,
        SecretId=secret_id,
        SecretKey=secret_key,
        Token=token,
        Scheme=scheme,
    )
    client = CosS3Client(config)

    config = CosConfig(
        Region=region,
        SecretId=secret_id,
        SecretKey=secret_key,
        Token=token,
        Scheme=scheme,
    )
    client = CosS3Client(config)
    return client
